package com.itmake.sample.mqtt.producer;

import com.itmake.sample.mqtt.constant.MqttConstant;
import org.springframework.integration.annotation.MessagingGateway;
import org.springframework.integration.mqtt.support.MqttHeaders;
import org.springframework.messaging.handler.annotation.Header;
import org.springframework.stereotype.Component;

/**
 * MQTT生产者消息发送接口
 *
 * @author Amjacks
 * @since 2023/08/10
 */
@Component
@MessagingGateway(defaultRequestChannel = MqttConstant.OUT_BOUND_CHANNEL)
public interface MqttProducer {

	/**
	 * 发送信息到MQTT服务器
	 *
	 * @param data 发送的文本
	 */
	void sendToMqtt(String data);

	/**
	 * 发送信息到MQTT服务器
	 *
	 * @param topic 主题
	 * @param payload 消息主体
	 */
	void sendToMqtt(@Header(MqttHeaders.TOPIC) String topic,
					String payload);

	/**
	 * 发送信息到MQTT服务器
	 *
	 * @param topic 主题
	 * @param qos 消息质量
	 * @param payload 消息主体
	 */
	void sendToMqtt(@Header(MqttHeaders.TOPIC) String topic,
					@Header(MqttHeaders.QOS) int qos,
					String payload);
}
